class Solution
{
public:
    int uniqueMorseRepresentations(vector<string> &words)
    {
        unordered_set<string> codes;
        auto encode = [&](const string &word)
        {
            string result;
            for (char c : word)
            {
                result += CodeMap[c - 'a'];
            }
            return result;
        };
        for (auto &word : words)
        {
            codes.insert(encode(word));
        }
        return codes.size();
    }

    vector<string> CodeMap = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
};